The present invention relates to a system and method for implementing multiple virtual IP addresses and virtual ports on multiple ports of a physical machine and for providing backup virtual and physical machines. More specifically, the invention relates to methods and apparatus for intercepting packets which are addressed to a virtual port on a virtual machine and translating the destination IP address and the destination port number to a destination IP address and destination port number of a physical machine which acts as a host or server and is selected to handle connections. The status of each physical and virtual machine is tracked, and when a new connection is established, the status of the physical and virtual machines is checked and a backup machine is used, if necessary.
With the recent explosive growth of the Internet, a very large percentage of businesses, including many small businesses, desire to have an internet site which is dedicated to them. An internet site is generally implemented on an internet server which is connected to the internet via an internet service provider (ISP). Some internet sites are busy enough to require a plurality of servers in order to handle all of the connections which are made to those sites. Accordingly, co-pending application Ser. No. 08/850,248 hereinafter referred to as Reference 1, describes a system and method for monitoring the a availability of servers at an Internet site which simulate a virtual server and preferentially sending new connection requests to servers which are available for connections and which are likely to have faster response times.
For less visited sites, the opposite situation is presented. Instead of one site requiring a plurality of servers, it would be desirable to combine a plurality of sites on a single server, since each one of the individual sites would not require all of the capacity of the server in order to service its connection traffic. It is also true that Internet traffic tends to be distributed among sites in a manner which is nonhomogenous. That is, certain sites receive a very large quantity of traffic while others receive little or no traffic. Furthermore, traffic on certain cites may increase or decrease unpredictably. Accordingly, co-pending application Ser. No. 08/850,730, hereinafter referred to as Reference 2, describes a system and method for sharing connection load among a group of servers in a manner that allows each server to service more than one site and multiple servers to share the load for individual sites.
Round robin DNS is a method that is used to distribute connections among servers. The DNS server returns a different IP address in response to the same domain name in a round robin fashion. Currently, when round robin DNS is used and a machine in the round robin rotation fails, the round robin DNS will still attempt to route connections to that machine when that machine's turn comes up. There is no mechanism for determining which machines have failed and avoiding sending connections to those machines. This is a consequence of the fact that round robin DNS is involved only with selecting a machine to handle a connection to a machine, and not with managing connections. What is needed is an apparatus and method for tracking connection attempts. If the number of unsuccessful connections attempted to a given machine were tracked, a reliable determination could be made that the machine is not going to respond to the connection request.
It would further be desirable if a failed machine could be temporally removed from the round robin rotation and could be periodically tested to determine if it is back on line. When a machine fails, it would be useful if a backup machine could be selected to replace the failed machine. For a system as described in Reference 1 and Reference 2, where many Internet sites are implemented on many servers, it would be further useful if a system and method were provided for flexibly determining which server might best serve as a backup for a server that has failed.